/** ***********************************************************************************
* @file         battery_task.h
* @brief        系统RTC管理任务 头文件
* @details      主要用来管理系统RTC时钟，以及数据接口
* @author       杨小珛
* @date         2021/01/05
* @copyright    北京高知科技有限公司    
* @version      V1.0
* @attention    无
**************************************************************************************/
#ifndef BATTERY_TASK_H
#define BATTERY_TASK_H

#include "os_app.h"

#define BATTERY_CHARGE_PIN  133

/********************************* 电池充电最高值*******************************/
#define	BATTERY_CHARGE_MAX_VOLTAGE	( 4150 ) /*系统备份电池最高充电设置阀值*/
#define	BATTERY_CHARGE_MIN_VOLTAGE	( 3650 ) /*系统备份电池最低充电设置阀值*/

#define BATTERY_DELAY_CHARGE_TIME ( 3600 * GAOZ_TICK_PERIOD_S )       /*计数1小时*/
#define BATTERY_DELAY_DISCHARGE_3SEC ( 3 * GAOZ_TICK_PERIOD_S )       /*计数3秒*/
#define BATTERY_DELAY_DISCHARGE_60SEC ( 60 * GAOZ_TICK_PERIOD_S )     /*计数60分钟*/

/**********************************系统电池状态*********************************/

typedef enum
{
    BAT_CHARG_INIT = 0x00,    /*电池状态初始化*/
    BAT_CHARG_START,           /*电池启动充电*/
    BAT_CHARG_DELAY,           /*电池延时充电*/
    BAT_CHARG_STOP,            /*电池停止充电*/
    BAT_CHARG_YES,             /*电池已安装*/
    BAT_CHARG_NO,              /*电池未安装*/
}battery_charg_state_e;

typedef enum
{
    BAT_DISCHARD_INIT = 0x00,/*电池状态初始化*/
    BAT_DISCHARD_START,       /*电池启动放电*/
    BAT_DISCHARD_DELAY,       /*电池延时放电*/
    BAT_DISCHARD_STOP,        /*电池停止放电*/
}battery_discharg_state_e;

/*************************锂电池充电使能控制***********************************/
typedef enum
{
    CHARGE_ON = 0,   
    CHARGE_OFF = 1,
} battery_charge_control_e;

/*************************锂电池安装状态能控制***********************************/
typedef enum
{
    BAT_INSTA_INIT = 0,   
    BAT_INSTA_NO,
    BAT_INSTA_YES,
} battery_insta_state_e;

/** ****************************************************************************
* @remarks       void battery_man_create_task( unsigned portBASE_TYPE uxPriority )
* @brief         备用电池管理
* @param[in]     uxPriority任务优先级；
* @param[out]    无
* @return        无
* @attention     在系统启动后进行创建
*******************************************************************************/
extern void battery_man_create_task( unsigned portBASE_TYPE uxPriority );

/** ****************************************************************************
* @remarks       battery_charg_state_e battery_charg_state_get( void )
* @brief         获取系统备用电池充电状态
* @param[in]     无
* @param[out]    无
* @return        充电状态
* @attention     无
*******************************************************************************/
extern battery_charg_state_e battery_charg_state_get( void );

/** ****************************************************************************
* @remarks       battery_discharg_state_e battery_discharg_state_get( void )
* @brief         获取系统备用电池放电状态
* @param[in]     无
* @param[out]    无
* @return        充电状态
* @attention     无
*******************************************************************************/
extern battery_discharg_state_e battery_discharg_state_get( void );

/** ****************************************************************************
* @remarks       battery_insta_state_e battery_insta_state_get( void )
* @brief         获取系统备用电池安装的状态
* @param[in]     无
* @param[out]    无
* @return        充电状态
* @attention     无
*******************************************************************************/
extern battery_insta_state_e battery_insta_state_get( void );

#endif

